<?php
include_once 'administradores/AdministradorTorneo.php';
include_once 'administradores/AdministradorEquipos.php';
include_once 'AdministradorUsuario.php';
include_once 'administradores/AdministradorPartidos.php';


class MiScore{

	public $administradorTorneo;
	public $administradorEquipo;
	public $administradorUsuario;
	public $administradorPartido;

	function __construct(){
		$this->administradorTorneo = new AdministradorTorneo();
		$this->administradorEquipo = new AdministrarEquipos();
		$this->administradorUsuario = new AdministradorUsuario();
		$this->administradorPartido = new AdministradorPartidos();
	}

	
	//Autor: Gabriel López y Claudia Pérez.
	//Comp: Registrar Resultado Partido / Modificar Resultado Partido.
	//Clase: MiScore
	//Pre: partido=!null
	//Pos: Se retorna 1 si se actualizó el partido en la base de datos.
	function actualizarPartido($partido){
		return $this->administradorPartido->actualizarPartido($partido);
	}


	
	//Autor: Claudia Pérez
	//Comp: registrarResultadoPartido Torneo
	//Clase: MiScore
	//Pre: equipoNombre=!null
	//Pos: Retorna un arreglo de partidos con todos los partidos existentes en la base de datos
	function traerPartidos($equipoNombre){

		$partidos=$this->administradorPartido->buscarPartidos($equipoNombre);
		if(sizeof($partidos)==0) echo "<font color=red>¡ERROR!. No se encontraron partidos para el equipo buscado.</font>";
		else $this->imprimiPartidos($partidos, $equipoNombre);
		return $partidos;

	}

	function imprimiPartidos($partidos,$equipoNombre){
		$res="<table class=\"paginated-table\">";
		$res.="<tr><th>Fecha</th><th>Torneo</th><th>Equipo</th><th>Contrincante</th><th>Resultado</th></tr>";
		foreach ($partidos as $pos => $partido){
			$torneo = "";
			$this->administradorTorneo->traerTorneos();
			foreach($this->administradorTorneo->torneos as $t){
				if($t->idTorneo == $partido->idTorneo){ $torneo = $t->nombre; break;}
			}
			$res.="\t<tr>";
			$res.="<td>".$partido->fecha."</td>";
			$res.="<td>".$this->administradorTorneo->nombreTorneo($partido->getIdTorneo())."</td>";
			$res.="<td>".$equipoNombre."</td>";
			$res.="<td>".($partido->equipos[0]->nombre==$equipoNombre?$partido->equipos[1]->nombre:$partido->equipos[0]->nombre)."</td>";
			if($partido->golesL !=-1 && $partido->golesV !=-1) $res.="<td> <a href=\"modificar_resultado.php?partido=".$pos."\"> Modificar </a> </td>";
			else $res.="<td> <a href=\"modificar_resultado.php?partido=".$pos."\"> Ingresar </a> </td>";
		}
		$res.="</tr>\n</table>";
		if(sizeof($partidos)>7) $res.="<br><span class=\"prev\">Anterior</span><span class=\"next\">Siguiente</span>";
		echo $res;
	}



	//Autor: Luis Gabriel López
	//Comp: Sortear Calendario
	//Clase: MiScore
	//Pre: nombreTorneo NO puede ser vacío
	//Pos: Se traen los Partidos pertenecientes al torneo ingresado y se llama al
	// método imprimiPartidosTorneo para que los muestre.
	function traerPartidosTorneoNuevo($nombreTorneo){
		$idTorneo = $this->idTorneo($nombreTorneo);
		$partidos=$this->administradorPartido->buscarPartidosTorneo($idTorneo);
		if(sizeof($partidos)==0) echo "<font color=red>¡ERROR!. No se pudieron traer los partidos del Torneo.</font>";
		else $this->imprimiPartidosTorneo($partidos);
	}


	function imprimiPartidosTorneo($partidos){
		$res="<br></br><table class=\"paginated-table\"><tr> <th>Fecha</th> <th>Equipo 1</th> <th>Equipo 2</th> </tr>";
		foreach ($partidos as $pos => $partido){
			$res.="\t<tr>";
			$res.="<td>".$partido->fecha."</td>";
			$res.="<td>".($partido->equipos[0]->nombre)."</td>";
			$res.="<td>".($partido->equipos[1]->nombre)."</td>";
			$res.="</tr>";
		}
		$res.="</tr>\n</table>\n";
		if(sizeof($partidos)>7) $res.="<br><span class=\"prev\">Anterior</span><span class=\"next\">Siguiente</span>";
		echo $res;
	}


	//Autor: Luis Gabriel López
	//Comp: Crear Torneo
	//Clase: MiScore
	//Pre: El nombre NO puede ser vacío.
	//Pos: Se envía el parámetro nombre al método crearTorneo de la clase AdministradorTorneo
	function crearTorneo($nombre, $usuario){
		$retorna = $this->administradorTorneo->crearTorneo($nombre, $usuario);

		//Mensajes a imprimir...
		if($retorna==1)echo "¡Torneo ".$nombre." creado satisfactoriamente!";
		if(strpos($retorna,"Duplicate")!==false) echo "¡Error!. Ya existe el torneo.";
	}


	function agregarEquipoTorneo($nombreTorneo,$equipo){
		$idEquipo = 0;
		foreach($this->administradorEquipo->equipos as $k => $e){
			if($e->nombre == $equipo){

				$idEquipo = $e->id_equipo;
				break;
			}

		}

		if($idEquipo!=0)$resultado = 0; $this->administradorTorneo->agregarEquipoTorneo($nombreTorneo, $idEquipo);
		echo "<br></font><font color=blue>Equipos en el torneo ".$nombreTorneo.": ".(sizeof($this->traerEquiposTorneo($nombreTorneo)));
	}

	//Autor: Luis Gabriel López
	//Comp: Consultar Tabla Posiciones
	//Clase: MiScore
	//Pre: nombreTorneo no puede ser vacío.
	//Pos: Se imprime la tabla de posiciones del torneo seleccionado. Si no se puede, imprime un error.
	function consultarTablaPosiciones($nombreTorneo){
		$idTorneo = null;
		$torneo = null;
		$torneos = $this->administradorTorneo->traerTorneosCerrados();
		//Trayendo idTorneo en base al nombreTorneo.
		foreach($torneos as $l => $t){
			if($t->nombre == $nombreTorneo){
				$idTorneo = $t->idTorneo;
				$torneo = $t;
				break;
			}
				
		}
		//Trayendo la tabla de posiciones...
		$tabla = $this->administradorTorneo->consultarTablaPosiciones($torneo);

		//Imprimiendo tabla de posiciones...
		if($tabla!=null){
			$columnas = 9;
			$filas = count($tabla);
			$tamano_col = ceil($filas / $columnas);
			$impr = "<table class=\"paginated-table\">\n";
			//Creando rótulos de la tabla.
			$rot[0] = "Nombre equipo";
			$rot[1] = "Puntos";
			$rot[2] = "GF";
			$rot[3] = "GC";
			$rot[4] = "GL";
			$rot[5] = "GV";
			$rot[6] = "PG";
			$rot[7] = "PP";
			$rot[8] = "PE";
			for ($j = 0; $j < 9; $j++) {
					$impr.= '<th>'.$rot[$j].'</th>';}
			for ($i = 0; $i < $filas; $i++) {
				$impr.= "\t<tr>";
				for ($j = 0; $j < $columnas; $j++) {
					$impr.= '<td>'.$tabla[$i][$j].'</td>';
				}
				$impr.= "</tr>\n";
			}
			$impr.= "</table>\n";
			if(sizeof($filas)>7) $res.="<br><span class=\"prev\">Anterior</span><span class=\"next\">Siguiente</span>";
			
		}
		else $impr = "<font color=red>¡ERROR!. Torneo no visible temporalmente.</font>";

		echo $impr;
	}



	function traerEquipo($nombreEquipo) {
		//TODO
	}


	//Autor: Luis Gabriel López y Gustavo Adolfo Bello
	//Comp: Sortear Calendario
	//Clase: MiScore
	//Pre: nombreTorneo no puede ser vacío.
	//Pos: Se sortea el Calendario del Torneo ingresado.
	// Se imprime una alerta con el significado del retorno.
	// Se retorna 1 si se realizó el sorteo y el cierre del torneo correctamente.
	// Se retorna 2 si se realizó el sorteo correctamente, pero no se pudo cerrar el torneo.
	// Se retorna 0 si no se pudo realizar el sorteo del Torneo.
	function sortearCalendario($nombreTorneo){
		$respuesta = 0;
		$imprimir = "";
		if($nombreTorneo != null){
			$equiposTorneo = $this->traerEquiposTorneo($nombreTorneo);
			$partidos = $this->administradorPartido->traerPartidos();
			$respuesta = $this->administradorTorneo->sortearCalendario($nombreTorneo,$equiposTorneo,$partidos);
				
			if($respuesta == 1) $imprimir = "¡Calendario Sorteado!. ¡Torneo cerrado y publicado exitosamente!";
			if($respuesta == 2) $imprimir = "¡Error Cerrando y publicando el Torneo!";
			if($respuesta == 0) $imprimir = "¡Error sorteando el Calendario!";
			echo '<script>alert("'.$imprimir.'")</script>';
		}
		return $respuesta;
	}




	function autenticarUsuario($nick, $pass) {
		$usu = $this->administradorUsuario->autenticarUsuario($nick, $pass);
		if($usu != null) return $usu;
	}


	function traerEquiposTorneo($nombreTorneo){
		$equiposTorneo = $this->administradorEquipo->traerEquiposTorneo($nombreTorneo);
		//echo sizeof($equiposTorneo);
		//echo $nombreTorneo;
		//var_dump($equiposTorneo);
		//foreach ($equiposTorneo as $i => $e){
		//	echo $e->
		//}
		return $equiposTorneo;
	}
	function idTorneo($nombreTorneo){
		$con = $this->administradorTorneo->idTorneo($nombreTorneo);
		if($con != null) 	return $con;
	}
	function crearPartidos($idTorneo, $partidos){
		$con = $this->administradorTorneo->crearPartidos($idTorneo, $partidos);
		if($con != null) 	return $con;
	}



	//Autor: Luis Gabriel López
	//Comp: Consultar Tabla Posiciones
	//Clase: MiScore
	//Pre: seleccionado PUEDE ser vacío
	//Pos: Se retorna un arreglo con todos los equipos del sistema.
	function traerEquipos(){
		return $this->administradorEquipo->traerEquipos();
	}

	//Autor: Luis Gabriel López
	//Comp: Consultar Tabla Posiciones
	//Clase: MiScore
	//Pre: seleccionado PUEDE ser vacío
	//Pos: Se imprime un comboBox con todos los equipos del sistema.
	// Si el campo $seleccionado tiene un valor, en el comboBox se deja como seleccionado el mismo.
	function imprimirEquipos($seleccionado){
		$equipos = $this->traerEquipos();
		//IMPRIMIENDO TORNEOS COMO COMBOBOX....
		$text = "<select name=\"selecciona2\">";
		$text .= "<option></option>";
		if($equipos!=null){
			foreach($equipos as $i => $t){
				if($seleccionado!=null && $seleccionado==$t->nombre) $text .= "<option selected=\"yes\">".$t->nombre."</option>";
				else $text .= "<option>".$t->nombre."</option>";
			}
			$text .= "</select>";
		}
		else $text .= "</select><br>¡ERROR!. No existen equipos registrados.";

		echo $text;

	}

	//Autor: Luis Gabriel López
	//Comp: Consultar Tabla Posiciones
	//Clase: MiScore
	//Pre: seleccionado PUEDE ser vacío
	//Pos: Se retorna un arreglo con Todos los torneos del sistema.
	function traerTorneos(){
		return $this->administradorTorneo->traerTorneos();
	}

	//Autor: Luis Gabriel Lípez
	//Comp: Consultar Tabla Posiciones
	//Clase: MiScore
	//Pre: seleccionado PUEDE ser vacío
	//Pos: Se retorna un arreglo con Todos los torneos en estado abierto del sistema.
	function traerTorneosAbiertos(){
		return $this->administradorTorneo->traerTorneosAbiertos();
	}

	//Autor: Luis Gabriel López
	//Comp: Consultar Tabla Posiciones
	//Clase: MiScore
	//Pre: seleccionado PUEDE ser vacío
	//Pos: Se retorna un arreglo con Todos los torneos en estado cerrado del sistema.
	function traerTorneosCerrados(){
		return $this->administradorTorneo->traerTorneosCerrados();
	}



	//Autor: Luis Gabriel López
	//Comp: Consultar Tabla Posiciones
	//Clase: MiScore
	//Pre: seleccionado PUEDE ser vacío
	//Pos: Se imprime un comboBox con todos los torneos del sistema.
	// Si el campo $seleccionado tiene un valor, en el comboBox se deja como seleccionado el mismo.
	function imprimirTorneos($seleccionado){
		$torneos = $this->traerTorneos();
		//IMPRIMIENDO TORNEOS COMO COMBOBOX....
		$text = "<select name=\"seleccionado\">";
		if($torneos!=null){
			foreach($torneos as $i => $t){
				if($seleccionado!=null && $seleccionado==$t->nombre) $text .= "<option selected=\"yes\">".$t->nombre."</option>";
				else $text .= "<option>".$t->nombre."</option>";
			}
			$text .= "</select>";
		}
		else $text .= "</select><br>¡ERROR!. No hay torneos.";

		echo $text;
	}


	//Autor: Luis Gabriel López
	//Comp: Consultar Tabla Posiciones
	//Clase: MiScore
	//Pre: seleccionado PUEDE ser vacío
	//Pos: Se imprime un comboBox con los torneos abiertos del sistema.
	// Si el campo $seleccionado tiene un valor, en el comboBox se deja como seleccionado el mismo.
	function imprimirTorneosAbiertos($seleccionado) {
		$torneos = $this->traerTorneosAbiertos();
		//IMPRIMIENDO TORNEOS COMO COMBOBOX....
		$text = "<select name=\"seleccionado\">";
		if($torneos!=null){
			foreach($torneos as $i => $t){
				if($seleccionado!=null && $seleccionado==$t->nombre) $text .= "<option selected=\"yes\">".$t->nombre."</option>";
				else $text .= "<option>".$t->nombre."</option>";
			}
			$text .= "</select>";
		}

		else $text .= "</select><br>¡ERROR!. No hay torneos abiertos.";
		echo $text;
	}


	//Autor: Luis Gabriel López
	//Comp: Consultar Tabla Posiciones
	//Clase: MiScore
	//Pre: seleccionado PUEDE ser vacío
	//Pos: Se imprime un comboBox con los torneos cerrados del sistema.
	// Si el campo $seleccionado tiene un valor, en el comboBox se deja como seleccionado el mismo.
	function imprimirTorneosCerrados($seleccionado) {//CAMBIAR NOMBRE POR IMPRIMIR!!!!!
		$torneos = $this->traerTorneosCerrados();
		//IMPRIMIENDO TORNEOS COMO COMBOBOX....
		$text = "<select name=\"seleccionado\">";
		if($torneos!=null){
			foreach($torneos as $i => $t){
				if($seleccionado!=null && $seleccionado==$t->nombre) $text .= "<option selected=\"yes\">".$t->nombre."</option>";
				else $text .= "<option>".$t->nombre."</option>";
			}
			$text .= "</select>";
		}

		else $text .= "</select><br>¡ERROR!. No existen torneos cerrados.";
		echo $text;
	}
	function traerPartidosTorneo($idTorneo){
		$con = $this->administradorTorneo->traerPartidos($idTorneo);
		if($con != null) 	return $con;
	}
}

?>